// 如果list中的所有元素都通过predicate的真值检测就返回true。（注：如果存在原生的every方法，就使用原生的every。） predicate 通过 iteratee 进行转换，以简化速记语法。

import { cb } from "../util/iteratee";
import { isArrayLike } from "./each";

export default function every(obj, predicate, context) {
  predicate = cb(predicate, context);
  var keys = !isArrayLike(obj) && Object.keys(obj),
    length = (keys || obj).length;
  for (var index = 0; index < length; index++) {
    var currentKey = keys ? keys[index] : index
    if (!predicate(obj[currentKey], currentKey, obj))
      return false
  }
  return true
}